package com.base.cn.platform.os.dao.user.loginLog;

import com.base.cn.platform.os.common.mybatis.BaseDao;
import com.base.cn.platform.os.entity.user.count.UserLoginDeviceNum;
import com.base.cn.platform.os.entity.user.count.UserLoginNum;
import com.base.cn.platform.os.entity.user.loginLog.CusUserLoginLog;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 用户的登录日志Dao
 * @author ll
 * @date 2018/6/1 9:55
 */
@Mapper
public interface CusUserLoginLogDao extends BaseDao<CusUserLoginLog> {

    /**
     * 用户登录设备统计量
     * @return 统计对象
     */
    UserLoginDeviceNum queryUserLoginDeviceNum(@Param("clazz") Class<CusUserLoginLog> clazz);

    /**
     * 查询活跃用户数量
     * @return 数量
     */
    Integer queryActiveUserNum(@Param("clazz") Class<CusUserLoginLog> clazz);

    /**
     * 查询某一天平台用户24小时内每个小时的登录量
     * @param dateTime 时间
     * @return 统计数据列表
     */
    List<UserLoginNum> queryUserLoginDayTimeNum(@Param("clazz") Class<CusUserLoginLog> clazz, @Param("dateTime") String dateTime);

    /**
     * 查询用户的总登录天数（去重）
     * @param clazz
     * @param userId 用户ID
     * @return 登录天数
     */
    int queryUserLoginDayNum(@Param("clazz") Class<CusUserLoginLog> clazz, @Param("userId") BigDecimal userId);


    /**
     * 查询访问用户
     * @param clazz
     * @param param 搜索条件
     * @return 统计数据列表
     */
    List<Map<String,Object>> queryUserLoginTimeNum(@Param("clazz") Class<CusUserLoginLog> clazz, @Param("param") Map param);

}
